package com.yunhe.authority.service.wechat;

import com.yunhe.authority.domain.authority.Menu;
import com.yunhe.authority.domain.wechat.KingKongDistrictDTO;
import com.yunhe.common.exception.ArgumentErrorException;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;


/**
 * @author zhengbo
 * @date 2021/10/19 15:01
 */
public interface KingKongDistrictService {

    /**
     * 保存金刚区
     * @param ids 菜单ids
     * @param parkId 虚拟园区id
     * @param usePlatform 使用平台
     * @throws ArgumentErrorException
     */
    @Transactional(rollbackFor = Exception.class, transactionManager = "transactionManager")
    void saveKingKongDistrict(String ids, Long parkId, String usePlatform) throws ArgumentErrorException;

    /**
     * 根据虚拟园区ID与使用平台查询金刚区
     * @param parkId 拟园区ID
     * @param usePlatform 使用平台
     * @return  KingKongDistrictDTO
     */
    KingKongDistrictDTO findKingKongDistrictMenuByParkId(Long parkId, String usePlatform);

    /**
     * 根据多个角色IDs、虚拟园区ID与使用平台查询金刚区
     * @param roleIds 多个角色IDs
     * @param parkId 虚拟园区ID
     * @param usePlatform 使用平台
     * @return List<Menu>
     */
    List<Menu> findKingKongDistrictMenuByRoleIdAndParkId(String roleIds, Long parkId, String usePlatform);

    /**
     * 根据多个角色IDs、虚拟园区ID、公司ID与使用平台查询金刚区
     * @param roleIds 多个角色IDs
     * @param parkId 虚拟园区ID
     * @param companyId 公司ID
     * @param usePlatform 使用平台
     * @return List<Menu>
     */
    List<Menu> findKingKongDistrictMenuByRoleIdAndCompanyIdAndParkId(String roleIds, Long parkId, Long companyId, String usePlatform);

    /**
     * 根据多个角色IDS 虚拟园区ID 公司ID与使用平台查询更多菜单
     * @param roleIds
     * @param parkId
     * @param companyId
     * @param usePlatform
     * @return
     */
    List<Menu> findDistrictMenuByRoleIdAndCompanyIdAndParkId(String roleIds, Long parkId, Long companyId, String usePlatform);

    /**
     * 根据多个角色IDs、虚拟园区ID与使用平台查询更多菜单
     * @param roleIds 多个角色IDs
     * @param parkId 虚拟园区ID
     * @param usePlatform 使用平台
     * @return List<Menu>
     */
    List<Menu> findAppMenuMoreByParkId(String roleIds, Long parkId, String usePlatform);
}
